This disclosure relates in general to cryptographic processing and, but not by way of limitation, to programmable cryptographic processing.
Cryptographic systems are used to secure information. Information systems have advanced as we progress into the Information Age. Cryptographic systems have not kept pace. Only a single algorithm is supported along a single processing path to process items at the highest security levels.
New developments in cryptographic design often obsolete older systems. Cryptographic systems are inflexible and cannot incorporate new developments once fielded. Design of new cryptographic systems is expensive and time consuming. Often a new cryptographic system must be produced for each deployment to cover different classification levels and security issues.
In modern cryptosystems, there is a need for multi-port (multi-channel) operation, where one cryptosystem can support multiple interfaces on both the plaintext and ciphertext interfaces. Current cryptosystems are designed in an unscalable architecture such that ports are added with a linear rise in circuit size and/or complexity. For more complex cryptographic systems, multiple paths at multiple classifications may also be used. Each path may have a separate cryptographic device, for example. Interfacing various devices make for a complex system. Each different cryptographic device may be different or configured differently to support complex data transport paths.
In high-assurance applications such as cryptosystems, there is typically a need to have redundant functions operating in parallel and continuously monitored to ensure correct operations. This monitoring can be particularly problematic when multiple microprocessors need to operate in a synchronized but independent manner. Regardless of whether the microprocessors share the same clock or have independent clocks, the microprocessors must respond to asynchronous events such as interrupts. Because of the asynchronous environment, the processors may execute instructions out of order from time to time, even when they are executing the same code base. This can result in different outputs from the microprocessors causing external monitoring functions to detect a mismatch and suspend operations. High assurance design principles dictate certain levels of functional and physical separation. The design issue arises because redundant data processing elements must always be ensured of processing the same information in the same order with the same results.
In a secure system, there is often a need to have data path reconfiguration for different system operations. In a high-assurance secure system, this reconfiguration function is typically established by the same redundant system elements that perform the primary functions. Both these types of processes must also be monitored to ensure correct operations. This monitoring can be particularly problematic, for example, when requests for data path reconfiguration occur asynchronously to the redundant decision making logic. Because of the asynchronous environment, the redundant decision making logic may occasionally come to different outcomes and the monitoring logic needs to provide a recovery mechanism to re-arbitrate for the correct data path before the data path is reconfigured.